package com.papercutting.platform.dto.response;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 活动资讯响应DTO
 */
@Data
public class NewsResponse implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * ID
     */
    private Long id;
    
    /**
     * 标题
     */
    private String title;
    
    /**
     * 副标题
     */
    private String subtitle;
    
    /**
     * 封面图片
     */
    private String coverImage;
    
    /**
     * 摘要
     */
    private String summary;
    
    /**
     * 详细内容
     */
    private String content;
    
    /**
     * 类型 1-活动 2-资讯 3-公告
     */
    private Integer type;
    
    /**
     * 类型文本
     */
    private String typeText;
    
    /**
     * 标签，逗号分隔
     */
    private String tags;
    
    /**
     * 作者
     */
    private String author;
    
    /**
     * 来源
     */
    private String source;
    
    /**
     * 发布时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime publishTime;
    
    /**
     * 活动开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime eventStartTime;
    
    /**
     * 活动结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime eventEndTime;
    
    /**
     * 活动地点
     */
    private String eventLocation;
    
    /**
     * 浏览量
     */
    private Integer viewCount;
    
    /**
     * 点赞量
     */
    private Integer likeCount;
    
    /**
     * 分享量
     */
    private Integer shareCount;
    
    /**
     * 排序号
     */
    private Integer sortOrder;
    
    /**
     * 状态 0-草稿 1-已发布 2-已下架
     */
    private Integer status;
    
    /**
     * 状态文本
     */
    private String statusText;
    
    /**
     * 是否推荐
     */
    private Boolean isRecommend;
    
    /**
     * 是否置顶
     */
    private Boolean isTop;
    
    /**
     * 创建者ID
     */
    private Long creatorId;
    
    /**
     * 创建者名称
     */
    private String creatorName;
    
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    
    /**
     * 设置类型文本
     */
    public void setType(Integer type) {
        this.type = type;
        if (type != null) {
            switch (type) {
                case 1:
                    this.typeText = "活动";
                    break;
                case 2:
                    this.typeText = "资讯";
                    break;
                case 3:
                    this.typeText = "公告";
                    break;
                default:
                    this.typeText = "未知类型";
                    break;
            }
        }
    }
    
    /**
     * 设置状态文本
     */
    public void setStatus(Integer status) {
        this.status = status;
        if (status != null) {
            switch (status) {
                case 0:
                    this.statusText = "草稿";
                    break;
                case 1:
                    this.statusText = "已发布";
                    break;
                case 2:
                    this.statusText = "已下架";
                    break;
                default:
                    this.statusText = "未知状态";
                    break;
            }
        }
    }
}
